import {getJSON, postJSON} from '../services/request'
import Taro from '@tarojs/taro'


export default function bindSuperior({hashid}) {
  // 三个哈希id，1.缓存中 S_hashid，2.用户id u_hashid，3.路由传过来的 hashid

  //获取缓存中的数据:用户自己的哈希id 上级哈希id 是否有上级？ token
  const u_hashid=Taro.getStorageSync('u_hashid'),S_hashid=Taro.getStorageSync('S_hashid'),
    hasSuperior=Taro.getStorageSync('hasSuperior'),token=Taro.getStorageSync('token');


  if(u_hashid){  //曾经登陆过
    // 有u_hashid必有token，现在token一般不会过期，用户再次打开,app页面会自动登录，假如过期让后台校验
    //如果用户缓存中有S_hashid，在获取自己的u_hashid时就会校验绑定（user界面-用户登陆时），故此：登陆过&&没有上级，就一定没有哈希id的缓存
    console.log(u_hashid,token,!hasSuperior,hashid);
    if(!hasSuperior&&hashid&&hashid!==u_hashid){  //仅当没有上级&&有哈希id传过来 不为空&&两个id不想等，才能绑定

      fnGetUserInfo(hashid,token).then(
        (res)=>{
          if(!res&&!S_hashid){   //token过期（曾经登录过长久不登陆了，）&&当缓存没有id（保存前验证下比较稳妥）
            Taro.setStorageSync('S_hashid',hashid);
          }
         },
        ()=>{  //网络错误了，把id先保存起来
          if(!S_hashid)Taro.setStorageSync('S_hashid',hashid); //当缓存没有id（保存前验证下比较稳妥）
        }
      );

    }

  }else{    //曾经没登陆过，保存hashid为S_hashid,
    //没有登录过，分享就不会带自己的u_hashid，也就不会发生把自己的id存到自己的缓存中，所以存到缓存的都是别人的哈希id，有缓存都不覆盖（分享后，清缓存的不考虑，交给后台校验）
    if(hashid&&!S_hashid){ //仅当有哈希id传过来&&缓存中没有上级id才保存
      Taro.setStorageSync('S_hashid',hashid);

    }
  }

}

//绑定上级
export async function fnGetUserInfo(hashid,token) {

  // console.log('上级hashid',hashid,'token',token);
  // Taro.checkSession().then(()=>{console.log('session_key没失效');return true;},()=>{console.log('失效');return false;});

  try{
    const res=await getJSON('/user/bind/inviter', {
      token,
      number:hashid
    });
    // console.log(res);

    if(res.code===1001){   //绑定成功
      Taro.setStorageSync('hasSuperior',true);        //设置缓存
      return '绑定成功';

    }else if (res.code===5001){
      return '邀请码错误';
    }else {   //其他错误，token过期
      return false;
    }

  }catch (e) {    //网络错误
    // console.log(e);
    throw '网络错误，请重试';
  }

}
